import java.util.*;
/*
输入一个长度为 n的整数数列，从小到大输出前 m小的数。

输入格式
第一行包含整数 n和 m。
第二行包含 n个整数，表示整数数列。

输出格式
共一行，包含 m个整数，表示整数数列中前 m小的数。

数据范围
1≤m≤n≤1e5，
1≤数列中元素≤1e9

输入样例：
5 3
4 5 1 3 2

输出样例：
1 2 3
 */
public class Main {
    static int[] h = new int[10010];//存放小根堆,下标从1开始，左孩子2*i，右孩子2*i+1
    static int size = 0;
    static int n,m;
    static void down(int u)//向下调整
    {
        int t = u;
        if(u*2<=n&&h[u*2]<h[t])t=u*2;
        if(u*2+1<=n&&h[u*2+1]<h[t])t=u*2+1;
        if(u!=t){
            int tmp = h[u];
            h[u] = h[t];
            h[t] = tmp;
            down(t);
        }
    }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        n = sc.nextInt();
        m = sc.nextInt();
        size = n;
        for(int i = 1; i <= n; i++){
            h[i] = sc.nextInt();
        }
        for(int i = n/2; i >= 1; i--){
            down(i);
        }
        for(int i = 1; i <= m; i++){
            System.out.print(h[1]+" ");
            h[1]=h[size--];
            down(1);
        }
    }
}